package admin

import (
	"e_mall_server/models"
	"e_mall_server/service"
	"github.com/gin-gonic/gin"
	"go.uber.org/zap"
	"strconv"
)

/**
 * @Author: zhaobin
 * @Description TODO
 * @Date: 2022-05-07 18:26
 */

// GetCarouselList 获取轮播图列表接口
func GetCarouselList(c *gin.Context) {
	// 无查询条件
	carouselList, err := service.GetCarouselList(map[string]interface{}{})
	if err != nil {
		zap.L().Error("service.GetCarouselList() failed", zap.Error(err))
		ResponseError(c, "查询轮播图列表失败")
		return
	}
	zap.L().Debug("轮播图数据", zap.Any("value", carouselList))
	ResponseSuccess(c, carouselList)
}

// AddCarousel 添加轮播图信息接口
func AddCarousel(c *gin.Context) {
	carousel := models.Carousel{}
	if err := c.ShouldBind(&carousel); err != nil {
		zap.L().Error("AddCarousel with invalid param", zap.Error(err))
		ResponseError(c, "请求参数错误")
		return
	}

	// 业务逻辑处理
	if err := service.AddCarousel(&carousel); err != nil {
		zap.L().Error("service.AddCarousel(&carousel) failed", zap.Error(err))
		ResponseError(c, "增加轮播图失败 请重试")
		return
	}

	// 创建成功返回响应
	ResponseSuccess(c, nil)

}

// UpdateCarousel 修改轮播图信息接口
func UpdateCarousel(c *gin.Context) {
	carousel := models.Carousel{}
	if err := c.ShouldBind(&carousel); err != nil {
		zap.L().Error("UpdateCarousel with invalid param", zap.Error(err))
		ResponseError(c, "请求参数错误")
		return
	}
	zap.L().Debug("carousel数据", zap.Any("value", carousel))
	// 业务逻辑处理
	if count := service.UpdateCarousel(&carousel); count > 0 {
		// 创建成功返回响应
		ResponseSuccess(c, nil)
		return
	}
	ResponseError(c, "修改轮播图失败 请重试")
}

// DeleteCarousel 删除轮播图接口
func DeleteCarousel(c *gin.Context) {
	id, err := strconv.ParseInt(c.Param("id"), 10, 64)
	if err != nil {
		zap.L().Error("DeleteCarousel with invalid param", zap.Error(err))
		ResponseError(c, "传入参数错误")
		return
	}
	count := service.DeleteCarouselById(id)
	if count > 0 {
		ResponseSuccess(c, nil)
		return
	}
	ResponseError(c, "删除轮播图失败")
}

// GetCarouselDetailById 通过id查询轮播图信息
func GetCarouselDetailById(c *gin.Context) {
	idStr := c.Param("id")
	id, err := strconv.ParseInt(idStr, 10, 64)
	if err != nil {
		zap.L().Error("GetCarouselDetailById with invalid param", zap.Error(err))
		ResponseError(c, "请求参数错误")
	}
	Carousel, err := service.GetCarouselDetailById(id)
	if err != nil {
		zap.L().Error("service.GetCarouselDetailById(id) failed", zap.Error(err))
		ResponseError(c, "获取管理员信息错误")
		return
	}
	ResponseSuccess(c, Carousel)
}
